package cn.itcast.web.exceptions;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
  自定义异常处理的作用：统一处理当前系统的异常，不然异常抛出到页面上造成用户的体验不佳。

  自定义异常处理器的步骤：
    1. 自定义一个类去实现HandlerExceptionResover接口
    2. 创建异常处理器的对象即可。
 */
@Component
public class CustomExceptionResovler implements HandlerExceptionResolver {


    //处理方案： 一旦controller出现异常，我们需要把异常信息存储到域中，然后跳转error.jsp页面上显示
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
                                         Object o, Exception e) {
        ModelAndView mv = new ModelAndView();
        //存储异常信息
        mv.addObject("errorMsg",e.getMessage());
        //设置返回的视图页面
        mv.setViewName("error");
        return mv;
    }
}
